package main

import "fmt"

func main() {
	var count = 5
	//无缓冲区的channel必须要等读就绪后才能写入
	//make(chan int)
	//单核线程中使用channel，必须创建有缓冲区的channel
	msgChannel := make(chan int, count)
	for i := 0; i < count; i++ {
		//向channel中写入数据,写入会优先找接收方，如果有则直接发给接收方，没有才会放入缓冲区
		msgChannel <- i
	}
	for i := 0; i < count; i++ {
		//从channel中读取数据，读取会有限查看缓冲区，如果缓冲区没有才会查看有无正在阻塞的发送方
		fmt.Println(<-msgChannel)
	}
	//如果缓冲区满了，则写会等待。如果缓冲区空了，则读会等待
}
